Memory devices are typically provided as internal, semiconductor, integrated circuits in computers or other electronic devices. There are many different types of memory including volatile and non-volatile memory. Volatile memory can require power to maintain its data and includes random-access memory (RAM), dynamic random access memory (DRAM), and synchronous dynamic random access memory (SDRAM), among others. Non-volatile memory can provide persistent data by retaining stored data when not powered and can include NAND flash memory, NOR flash memory, phase change random access memory (PCRAM), resistive random access memory (RRAM), and magnetic random access memory (MRAM), among others.
Memory devices can be combined together to form a solid state drive (SSD). An SSD can include non-volatile memory, e.g., NAND flash memory and/or NOR flash memory, and/or can include volatile memory, e.g., DRAM and/or SRAM, among various other types of non-volatile and volatile memory. Flash memory devices can include memory cells storing data in a charge storage structure such as a floating gate, for instance, and may be utilized as non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption.
An SSD can be used to replace hard disk drives as the main storage volume for a computer, as the solid state drive can have advantages over hard drives in terms of performance, size, weight, ruggedness, operating temperature range, and power consumption. For example, SSDs can have superior performance when compared to magnetic disk drives due to their lack of moving parts, which may avoid seek time, latency, and other electro-mechanical delays associated with magnetic disk drives.
Memory is utilized as volatile and non-volatile data storage for a wide range of electronic applications. Non-volatile memory may be used in, for example, personal computers, portable memory sticks, digital cameras, cellular telephones, portable music players such as MP3 players, movie players, and other electronic devices. Memory cells can be arranged into arrays, with the arrays being used in memory devices.
Memory cells in an array architecture can be programmed to a desired state. For instance, electric charge can be placed on or removed from the charge storage structure, e.g., floating gate, of a memory cell to program the cell to a particular state. For example, a single level (memory) cell (SLC) can be programmed to one of two different states, each representing a different digit of a data value, e.g., a 1 or 0. Some flash memory cells can be programmed to one of more than two states corresponding to different particular data values, e.g., 1111, 0111, 0011, 1011, 1001, 0001, 0101, 1101, 1100, 0100, 0000, 1000, 1010, 0010, 0110, or 1110. Such cells may be referred to as multi state memory cells, multiunit cells, or multilevel (memory) cells (MLCs). MLCs can provide higher density memories without increasing the number of memory cells since each cell can be programmed to states corresponding to more than one digit, e.g., more than one bit of data.
Various error correction code (ECC) schemes can perform better via use of soft data. However, determining soft data and/or communicating soft data, e.g., between controller and memory, can be time consuming, and therefore can impact memory throughput. A hard read is an operation to determine hard data, e.g., a data value stored in a memory cell based on its state. Soft data, for example, can be used to indicate a confidence level associated with the hard data. For instance, soft data can provide a confidence, e.g., reliability, measure associated with a hard read, e.g., a likelihood that a determined state of a memory cell is a different state.
Some memory cells can be programmed to a quantity of states that does not correspond to an integer number of stored digits, e.g., bits. As used herein, “stored in” a memory cell intends the memory cell being programmed to a state corresponding a data value or portion thereof. For instance, each memory cell can correspond to a fractional number of stored bits. Multiple memory cells can be used together to store an integer number of bits. Memory cells used together to store an integer number of bits are referred to herein as fractional bit memory cells. As such, a fractional bit memory cell is physically the same as a memory cell used to store an integer number of bits. A fractional bit memory cell is a memory cell that can be used in conjunction with other memory cells to store an integer number of bits as a group of memory cells. Various packing schemes can be used to map between states of the multiple memory cells and particular data values.